package com.uzai.console.service.device;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.device.DeviceGroupQuery;
import com.uzai.console.dto.device.DeviceQuery;
import com.uzai.console.entity.Device;
import com.uzai.console.vo.device.DeviceInfoVo;

import java.util.List;

/**
 * @author liuqi
 * @date 2021年08月25日 20:17
 */
public interface DeviceService {

    /**
     * 根据设备类型和微信唯一ID查询设备信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceType
     * @return null
     */
    Device findDeviceInfoByDeviceUniqueId(Long deviceUniqueId, String deviceType, Long merId);

    /**
     * 根据设备类型和微信唯一ID查询设备信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceType
     * @return null
     */
    List<Device> findDeviceInfoByDeviceUniqueIds(List<Long> deviceUniqueId, String deviceType, Long merId);

    /**
     * 根据设备类型和微信唯一ID查询设备信息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceType
     * @return null
     */
    Device findDeviceInfoByDeviceId(String deviceId, String deviceType);


    /**
     * 查询未绑定客服账号的机器人列表-分页
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceQuery
     * @return null
     */
    Page<DeviceInfoVo> findDevicePageForUnBindKefuUser(DeviceQuery deviceQuery);

    /**
     * 查询未绑定客服账号的机器人列表-不分页
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceQuery
     * @return null
     */
    List<DeviceInfoVo> findDeviceListForUnBindKefuUser(DeviceQuery deviceQuery);

    /**
     * 查询机器人列表-不分页
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceQuery
     * @return null
     */
    List<DeviceInfoVo> findDeviceList(DeviceQuery deviceQuery);

    /**
     * 查询机器人列表-分页
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceQuery
     * @return null
     */
    Page<Device> findDevicePage(DeviceQuery deviceQuery);

    /**
     * 查询群内机器人列表-不分页
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param deviceGroupQuery
     * @return null
     */
    List<DeviceInfoVo> findDeviceListByGroup(DeviceGroupQuery deviceGroupQuery);

}
